package com.fs.cv.dao;

import com.fs.cv.pojo.pojodao.Class;
import com.fs.cv.pojo.pojodao.Headmaster;
import com.fs.cv.pojo.pojoview.ClassHeadmaster;
import com.fs.cv.pojo.pojoview.ClassInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>班级管理dao层</p>
 *
 * @author : 苏明友
 * @date : 2020-10-10 13:32
 **/
public interface ClassManagementDao {
    /**
     * 方法描述:根据user_id查询到具体的教务主任，然后教务主任再通过自己的专业id查询到自己所管理的班级
     * @参数 [userId]
     * @返回值 java.util.List<com.fs.cv.pojo.pojoview.ClassInfo>
     * @作者 苏明友
     * @时间 2020/10/10
     */
    List<ClassInfo> getAllClassInfoToView(@Param("userId") Integer userId);

    /**
     * 方法描述:根据userId来查询教务主任的专业ID
     * @参数 [userId]
     * @返回值 java.util.List<com.fs.cv.pojo.pojoview.ClassInfo>
     * @作者 苏明友
     * @时间 2020/10/10
     */
    List<ClassInfo> getDepartmentIdByUserId(@Param("userId") Integer userId);

    /**
     * 方法描述:向数据库中添加一个班级
     * @参数 [classInfo]
     * @返回值 int
     * @作者 苏明友
     * @时间 2020/10/10
     */
    int addClassInfo(ClassHeadmaster classHeadmaster);

    /**
     * 方法描述:根据class_name来查询class_id显示到模态框
     * @参数 [className]
     * @返回值 com.fs.cv.pojo.pojoview.ClassInfo
     * @作者 苏明友
     * @时间 2020/10/10
     */
    ClassInfo showClassIdToAddHeadmaster(@Param("className")String className);

    /**
     * 方法描述:使用前端模态框向班主任表中添加班主任信息
     * @参数 [classInfo]
     * @返回值 int
     * @作者 苏明友
     * @时间 2020/10/10
     */
    int addHeadmasterInfo(ClassHeadmaster classHeadmaster);

    /**
     * 方法描述:根据classId逻辑删除班级信息
     * @参数 [classId]
     * @返回值 int
     * @作者 苏明友
     * @时间 2020/10/11
     */
    int deleteClassInfoByClassId(@Param("classId")Integer classId);

    /**
     * 方法描述:删除班级的同时逻辑删除该班的班主任
     * @参数 [classId]
     * @返回值 int
     * @作者 苏明友
     * @时间 2020/10/11
     */
    int updateHeadmasterStateByClassId(@Param("classId")Integer classId);

    /**
     * 方法描述:根据classId查询那些班主任没有管理对应的班级-->未完成，不影响运行
     * @参数 []
     * @返回值 java.util.List<com.fs.cv.pojo.pojodao.Headmaster>
     * @作者 苏明友
     * @时间 2020/10/11
     */
    List<Headmaster> getOneHeadmasterInfoByClassId();

    List<Class> getOneClassInfo(@Param("classId")Integer classId);

    int updateHeadmasterInfo(Headmaster headmaster);
}
